import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";

// 在convex这个框架下定义数据库 schema，用于描述和操作一个名为 boards 的数据表

export default defineSchema({
  boards: defineTable({
    // 表
    authorId: v.string(), // 作者的唯一标识符
    authorName: v.string(), // 作者的名字
    imageUrl: v.string(), // 图片 URL
    orgId: v.string(), // 所属的组织 ID
    title: v.string(), // 标题
    // favoritesUser: v.array(v.string()),
  })
    .index("by_org", ["orgId"]) // 定义了一个基于 orgId 的索引，允许根据 orgId 快速查询所有相关的 boards
    .searchIndex("search_title", { searchField: "title" }), // 定义了一个基于 title 字段的全文搜索索引，允许通过关键词快速搜索 title 字段中的内容

  // 用户收藏关系表
  userFavorites: defineTable({
    orgId: v.string(),
    userId: v.string(),
    boardId: v.id("boards"),
  })
    .index("by_board", ["boardId"]) // 查找收藏关系表中的某个会员
    .index("by_user_org", ["userId", "orgId"]) // 查询某个用户在某个组织中的收藏记录
    .index("by_user_board", ["userId", "boardId"]) // 在处理收藏时，可以快速判断这个用户是否有收藏关系
    .index("by_user_board_org", ["userId", "boardId", "orgId"]), // 特定组织下，查询某个用户是否有收藏关系
});
